1. Field of the Invention
The present invention pertains generally to computing system memory management and, more particularly, to copying data to memory of a detachable device using a direct memory access (DMA) mechanism.
2. Background of the Invention
DMA is a well-known technique for transferring data between one sub-system within a computer system to another sub-system without the aid of the system's central processing unit (CPU). Examples of sub-systems using DMA include disk-drive controllers, graphics cards, network cards and sound cards. If the CPU were used, as another example, to transfer program instructions stored on a secondary storage (e.g., hard disk, a RAM drive) into the primary storage (e.g., system RAMs) for execution, operations would be severely slowed and overall system performance severely degraded.
Typically as a solution, a dedicated DMA controller is used to load the program, freeing the CPU for other operations. The DMA controller may include a processor and numerous registers that keep track of the start address from which bytes of data are to be moved, the address to where those bytes should be placed, and the number of bytes involved in the move operation.
Given that the DMA and CPU memory access usually share the same information buses for data and/or commands, therefore, while the DMA controller is executing a memory data transfer, the CPU is not able to access the same memory for read/write operations. One solution to this is to make use of multi-ported or dual ported memories. Generally speaking, the CPU and DMA controller can both access the same memory contents through separate ports with minimal interference to the memory cycle performance.
One disadvantage however is that any typical DMA is a method for intra-system data transfers. It fails to adequately address any large volume (e.g., multiple terabytes or multiple-million files) data transfer needs for inter-system data transfers. Today, there are numerous areas in our society where large volume electronic data transfers are time critical activities, for example, data transfers for electronic evidence such as emails, chat messages and other electronic documentation in discovery proceedings during litigation. Other activities include data transfers of daily financial information, Homeland security processing for air flights and other modes of entries into the USA, and clinical trial related pharmaceutical bioinformatics tasks.
Transferring large volume of data from one system to another is an input/output (I/O) intensive activity where the data transfer bottleneck is its single I/O interface (e.g., IDE, SATA, SCSI Fiber Channel). IDE and SATA interfaces provide a throughput ranging from 150-300 MB/s. USB devices operate at approximately 60 MB/s. Operating at the highest rates and assuming only a few large files, a terabyte (TB) takes approximately 1-2 hours to transfer from one drive to another. When files have smaller sizes, the transfer time could be extended as much as 6-8 hours for the transfer.